#include <iostream>
#include <string>

struct B { virtual int foo(); };
struct D : public B { virtual int foo(); };
void test() {
    std::string S("abc");   // std::string::string(...)
    std::string S2(S);      // ditto
    int* a = new int[4];    // operator new[]
    delete a[];             // operator delete[]
    D* d1 = new D;
    B* b = d1;
    D* d2 = dynamic_cast<D*>(b); // dynamic_cast  
}
